package thread;


public class SyncDemo3
{
    public static void main(String[] args)
    {
        Boo b1 = new Boo();
        Boo b2 = new Boo();
        // 如果静态方法上使用 synchronized 那么该方法一定有同步效果
        Thread t1 = new Thread("abc")
        {
            @Override
            public void run()
            {
//                Boo.doSome();
                b1.doSome();
            }
        };

        Thread t2 = new Thread("123")
        {
            @Override
            public void run()
            {
//                Boo.doSome();
                b2.doSome();
            }
        };

        t1.start();
        t2.start();


    }
}

class Boo
{
    // 静态方法 加 synchronized 一定是要排队的   无论是方法名调用 还是对象调用 都要排队
//    public static synchronized void doSome()
    public static void doSome()
    {
        Thread thread = Thread.currentThread();
        // 在静态方法中如何使用块锁
        synchronized (Boo.class)
        {
            System.out.println(thread.getName() + " is running");
        }
        try
        {
            Thread.sleep(3000);
        }catch (InterruptedException e)
        {
            e.printStackTrace();
        }
        System.out.println(thread.getName() + " is over");
    }
}
